Django তে RESTful API তৈরি করা একটি সাধারণ পদ্ধতি হয়ে উঠেছে, যা ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা বিনিময়ের জন্য ব্যবহৃত হয়। Django তে RESTful API তৈরি করার জন্য সাধারণত Django REST framework (DRF) ব্যবহার করা হয়। Django REST framework একটি শক্তিশালী টুলকিট যা Django অ্যাপ্লিকেশনের সাথে RESTful API তৈরি এবং ব্যবহারে সহজতা প্রদান করে।
এখানে আমরা Django তে RESTful API তৈরি করার মূল ধারণা এবং DRF ব্যবহার করার নিয়ম দেখবো।
১. Django REST Framework ইনস্টল করা
প্রথমে, আপনাকে Django REST framework (DRF) ইনস্টল করতে হবে। এটি পিপ (pip) ব্যবহার করে ইনস্টল করা যায়:
pip install djangorestframework
এটি ইনস্টল হওয়ার পর, আপনাকে settings.py ফাইলে এটি যোগ করতে হবে।
# settings.py
INSTALLED_APPS = [
# অন্যান্য অ্যাপ
'rest_framework', # Django REST Framework অ্যাপ
]
এখানে:
rest_frameworkঅ্যাপটি Django তে RESTful API তৈরি করার জন্য প্রয়োজনীয় টুলস প্রদান করে।
২. RESTful API এর মূল ধারণা
REST (Representational State Transfer) একটি আর্কিটেকচারাল স্টাইল, যা HTTP প্রটোকল ব্যবহার করে ক্লায়েন্ট এবং সার্ভারের মধ্যে ডেটা ট্রান্সফার করতে সাহায্য করে। RESTful API গুলি HTTP Methods (GET, POST, PUT, DELETE) ব্যবহার করে CRUD (Create, Read, Update, Delete) অপারেশনগুলো সম্পাদন করে।
- GET: সার্ভার থেকে ডেটা পাওয়া
- POST: সার্ভারে নতুন ডেটা তৈরি করা
- PUT: সার্ভারে বিদ্যমান ডেটা আপডেট করা
- DELETE: সার্ভার থেকে ডেটা মুছে ফেলা
৩. Django তে RESTful API তৈরি করা
এখন আমরা Django তে একটি সাধারণ RESTful API তৈরি করবো, যেখানে একটি মডেল থাকবে এবং আমরা API এর মাধ্যমে ডেটা অ্যাক্সেস করবো।
১. মডেল তৈরি
ধরা যাক, আমরা একটি Book মডেল তৈরি করবো, যেখানে বইয়ের নাম, লেখক এবং প্রকাশন তারিখ থাকবে।
# models.py
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
published_date = models.DateField()
def __str__(self):
return self.title
২. Serializer তৈরি
Django REST framework তে serializer ক্লাসের মাধ্যমে মডেল ডেটাকে JSON ফরম্যাটে রূপান্তর করা হয়। সুতরাং, আমাদের Book মডেলের জন্য একটি serializer তৈরি করতে হবে।
# serializers.py
from rest_framework import serializers
from .models import Book
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ['id', 'title', 'author', 'published_date']
এখানে:
BookSerializerমডেল থেকে ডেটা JSON ফরম্যাটে রূপান্তর করার জন্য ব্যবহার করা হবে।ModelSerializerহল DRF এর একটি কনভেনিয়েন্ট ক্লাস যা মডেলের ফিল্ডগুলোর সাথে অটোমেটিক্যালি কাজ করে।
৩. Views তৈরি
আমরা Django তে APIView অথবা ViewSets ব্যবহার করে API views তৈরি করতে পারি। এই উদাহরণে, আমরা APIView ব্যবহার করবো।
# views.py
from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import Book
from .serializers import BookSerializer
class BookList(APIView):
def get(self, request):
books = Book.objects.all()
serializer = BookSerializer(books, many=True)
return Response(serializer.data)
def post(self, request):
serializer = BookSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
এখানে:
BookListক্লাসটি একটি API view যা GET এবং POST মেথড সমর্থন করে।getমেথড সমস্ত বইয়ের ডেটা রিটার্ন করে।postমেথড নতুন বইয়ের ডেটা গ্রহণ করে এবং সেগুলো ডাটাবেসে সেভ করে।
৪. URL Routing
এখন, আপনাকে urls.py ফাইলে এই API view গুলি রাউট করতে হবে।
# urls.py
from django.urls import path
from . import views
urlpatterns = [
path('books/', views.BookList.as_view(), name='book_list'),
]
এখানে:
BookList.as_view()এইভাবে আমরাAPIViewক্লাসটিকে URL এর সাথে সংযুক্ত করেছি।
৪. API ব্যবহার
এখন আপনার Django অ্যাপ্লিকেশন চলমান অবস্থায়, আপনি নিম্নলিখিত API রিকোয়েস্টগুলো পাঠাতে পারেন:
১. GET রিকোয়েস্ট
আপনি /books/ পাথে GET রিকোয়েস্ট পাঠিয়ে সমস্ত বইয়ের ডেটা পাবেন।
GET http://127.0.0.1:8000/books/
এটি JSON রেসপন্স ফিরিয়ে দেবে:
[
{
"id": 1,
"title": "Book 1",
"author": "Author 1",
"published_date": "2024-01-01"
},
{
"id": 2,
"title": "Book 2",
"author": "Author 2",
"published_date": "2024-01-02"
}
]
২. POST রিকোয়েস্ট
আপনি /books/ পাথে POST রিকোয়েস্ট পাঠিয়ে একটি নতুন বইয়ের তথ্য যোগ করতে পারেন।
POST http://127.0.0.1:8000/books/
Content-Type: application/json
{
"title": "New Book",
"author": "New Author",
"published_date": "2024-01-03"
}
এটি একটি নতুন বই সেভ করে এবং সফল রেসপন্স ফিরিয়ে দেবে।
৫. Django তে API Authentication এবং Permissions
Django REST framework তে API এর authentication এবং permissions সিস্টেম রয়েছে, যা ব্যবহারকারীদের অনুমতি নিয়ন্ত্রণ করতে সাহায্য করে। আপনি বিভিন্ন ধরণের authentication (যেমন, Token-based authentication, Session-based authentication) ব্যবহার করতে পারেন এবং বিভিন্ন permission সেট করে নির্দিষ্ট ইউজারদের অ্যাক্সেস দিতে পারেন।
এগুলোর কনফিগারেশন আপনার API এর নিরাপত্তা বৃদ্ধি করে।
সারাংশ
Django তে RESTful API তৈরি করার জন্য Django REST framework (DRF) ব্যবহৃত হয়, যা API তৈরির প্রক্রিয়াকে সহজ এবং কার্যকরী করে তোলে। আপনি views, serializers, URLs, এবং authentication সিস্টেম ব্যবহার করে দ্রুত RESTful API তৈরি করতে পারেন। Django এর সাথে Ajax এবং JavaScript ব্যবহার করে ক্লায়েন্ট সাইড থেকে এই API গুলির সাথে ইন্টারঅ্যাক্ট করা সম্ভব।
Read more